package com.fivefu.core.skyeye.event.services;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fivefu.core.skyeye.event.vo.SceneCameraVo;
import com.fivefu.core.skyeye.event.vo.SceneVo;
import com.fivefu.core.skyeye.event.vo.UrlChannelVo;

import java.util.List;
import java.util.Map;

public interface SceneService {

    /**
     * 查询机器切片识别探头数量
     * @param id 场景编号
     * @return
     */
    Map<String, Object> querySceneNodeCount(Long id);

    /**
     * 分页获取场景探头列表
     * @param cameraCode 场景唯一标识
     * @param page
     * @param limit
     * @return
     */
    Page<Map<String, Object>> querySceneCameraByPage(String cameraCode, Integer page, Integer limit);

    /**
     * 获取场景探头详情
     * @param sceneId 场景编号
     * @param cameraId 探头编号
     * @return
     */
    Map<String, Object> querySceneCameraDetail(String sceneId, String cameraId);

    /**
     * 开关场景探头
     * @param sceneCode 场景唯一标识
     * @param cameraList 探头唯一标识
     * @param enable 是否开启(0:否 1:是)
     * @return
     */
    String onOffSceneCamera(String sceneCode,List<String> cameraList,Integer enable);

    /**
     * 删除场景下探头
     * @param id 场景探头编号
     * @param userid 操作用户编号
     */
    void deleteSceneCamera(Long id,String userid);

    /**
     * 编辑场景探头
     * @param sceneCameraVo 场景探头信息
     * @param userid 操作用户编号
     */
    boolean editSceneCamera(SceneCameraVo sceneCameraVo, String userid);

    /**
     * 开启、关闭场景探头
     * @param id 场景探头编号
     * @param userid 用户编号
     * @param enable 是否启用(0:否 1:启用)
     * @return
     */
    void enableSceneCamera(Long id, String userid, Integer enable);

    /**
     * 推送有切片的探头流地址
     * @param protocal      取流协议(共同协议：rtsp,rtmp,hls,海康额外有：hik,ws,大华额外有：FLV_HTTP)
     * @param subType       码流类型(0:主码流,1:辅流1,2:辅流2。默认为0主码流)只有大华有
     * @return
     */
    List<UrlChannelVo> getSceneCameraList(String protocal, Integer subType);

    /**
     * 编辑场景
     * @param sceneVo 场景信息
     * @param userid 操作用户编号
     */
    Long editScene(SceneVo sceneVo, String userid);

    /**
     * 开启、关闭场景
     * @param id 场景编号
     * @param userid 用户编号
     * @param enable 是否启用(0:否 1:是)
     */
    void enableScene(Long id,String userid,Integer enable);

    /**
     * 删除场景
     * @param id 场景编号
     * @param userid 用户编号
     */
    void deleteScene(Long id,String userid);

    /**
     * 获取切片编号
     * @param sizeNum 需要的切片数量
     * @return
     */
     Long getSliceNode(Integer sizeNum);

    /**
     * 获取识别编号
     * @param sizeNum 需要的识别数量
     * @return
     */
     Long getEventNode(Integer sizeNum);
}
